ostree.git
12 years agocore: Use linkat() for hardlink checkouts too
Colin Walters [Sat, 7 Sep 2013 23:01:27 +0000 (19:01 -0400)]
core: Use linkat() for hardlink checkouts too

Clean up how we deal with the uncompressed object cache; we now use
openat()/linkat() and such just like we do for the main objects/.

Use linkat() between the objects and the destination, if possible.

https://bugzilla.gnome.org/show_bug.cgi?id=707733

12 years agorepo: Make the body parameter to ostree_repo_commit optional
Jasper St. Pierre [Sat, 7 Sep 2013 00:09:59 +0000 (20:09 -0400)]
repo: Make the body parameter to ostree_repo_commit optional

https://bugzilla.gnome.org/show_bug.cgi?id=707727

12 years agorepo: Drop the branch parameter from ostree_repo_commit
Jasper St. Pierre [Sat, 7 Sep 2013 00:09:44 +0000 (20:09 -0400)]
repo: Drop the branch parameter from ostree_repo_commit

It's unused. Make users explicitly write a ref if they want this;
high-level convenience API will be introduced later.

https://bugzilla.gnome.org/show_bug.cgi?id=707727

12 years agobuiltin-commit: Don't parse the parent's GVariant by hand
Jasper St. Pierre [Fri, 6 Sep 2013 23:35:23 +0000 (19:35 -0400)]
builtin-commit: Don't parse the parent's GVariant by hand

Instead, use OstreeRepoFile as a handle for the parent commit.
We need to add an accessor for the metadata checksum, as that
hasn't been exposed before.

https://bugzilla.gnome.org/show_bug.cgi?id=707727

12 years agorepo-file: s/content_checksum/contents_checksum/
Jasper St. Pierre [Sat, 7 Sep 2013 00:19:42 +0000 (20:19 -0400)]
repo-file: s/content_checksum/contents_checksum/

This is what we call it everywhere else, so just be consistent.
It also lines up with metadata_checksum better.

https://bugzilla.gnome.org/show_bug.cgi?id=707727

12 years agorepo: Fix file descriptor leak from previous commit
Colin Walters [Sun, 8 Sep 2013 14:41:18 +0000 (10:41 -0400)]
repo: Fix file descriptor leak from previous commit

I keep forgetting mmap doesn't take ownership of the fd.

12 years agocore: Use at-relative lookups for archive-z2 content
Colin Walters [Sat, 7 Sep 2013 14:10:21 +0000 (10:10 -0400)]
core: Use at-relative lookups for archive-z2 content

We can't quite do it for bare repositories yet because we need to have
a way to go from struct stat -> GFileInfo, and that's buried in gio's
private GLocalFile class.

12 years agocore: Use at-relative lookups for metadata reading
Colin Walters [Sat, 7 Sep 2013 09:01:41 +0000 (05:01 -0400)]
core: Use at-relative lookups for metadata reading

Just use openat() for locating variants, rather than doing the lstat()
+ open().  This also drops several malloc+object allocations from the
lookup path.

12 years agocore: Use at-relative lookup for locating objects too
Colin Walters [Sat, 7 Sep 2013 08:47:40 +0000 (04:47 -0400)]
core: Use at-relative lookup for locating objects too

Add new internal API to both fstatat() and write a pathname for the
given object.  Use it in commit, and also wrapped in the old
GFile-based API.

This is more efficient.

12 years agocore: Add malloc-free API for objects, use *at functions for storing
Colin Walters [Sat, 7 Sep 2013 00:33:55 +0000 (20:33 -0400)]
core: Add malloc-free API for objects, use *at functions for storing

This is more efficient; we avoid malloc of a number of pathname +
GFile objects, plus the kernel doesn't have to traverse the repo path
again.

12 years agorepo: Make commit_transaction introspectable
Jasper St. Pierre [Sat, 7 Sep 2013 05:37:09 +0000 (01:37 -0400)]
repo: Make commit_transaction introspectable

12 years agoFix build
Jasper St. Pierre [Sat, 7 Sep 2013 00:47:13 +0000 (20:47 -0400)]
Fix build

Before I pushed the "move code to a different file" commit, I rebased,
but forgot to test the build. Sorry.

12 years agoMove ref writing to be transaction-based
Jasper St. Pierre [Thu, 5 Sep 2013 21:25:26 +0000 (17:25 -0400)]
Move ref writing to be transaction-based

Rather than having separate write_ref calls, make clients start a
transaction, add some refs, and then commit it. While this doesn't
make it 100% atomic, it makes it easier for us to use an atomic
model, and it means we don't do as much I/O updating the summary
file and such.

https://bugzilla.gnome.org/show_bug.cgi?id=707644

12 years agorepo: Move the scanning hardlinks optimization out of prepare_transaction
Jasper St. Pierre [Fri, 6 Sep 2013 22:51:54 +0000 (18:51 -0400)]
repo: Move the scanning hardlinks optimization out of prepare_transaction

This is just a terrible API to have. Make the scanning a separate method,
and document it as an optimization.

12 years agorepo: Make abort_transaction silently succeed if we're not in a transaction
Jasper St. Pierre [Thu, 5 Sep 2013 21:57:53 +0000 (17:57 -0400)]
repo: Make abort_transaction silently succeed if we're not in a transaction

This helps callers out a lot, and means we can always call abort_transaction
at the end of a function.

https://bugzilla.gnome.org/show_bug.cgi?id=707644

12 years agorepo: Move the transaction stats to a separate struct
Jasper St. Pierre [Thu, 5 Sep 2013 20:48:40 +0000 (16:48 -0400)]
repo: Move the transaction stats to a separate struct

This is much easier for callers to handle, and simplifies
the API a lot.

https://bugzilla.gnome.org/show_bug.cgi?id=707644

12 years agorepo: Rename "stage" to "write" in the API
Jasper St. Pierre [Thu, 5 Sep 2013 20:36:44 +0000 (16:36 -0400)]
repo: Rename "stage" to "write" in the API

An earlier version of this API acted like git in that some objects
would be staged in a temporary directory which would be then committed
in one go by moving files around. The API doesn't match most users
expectations though, as while the stage is nice as a high-level API
it isn't really suited for low-level APIs.

While the stage was removed, the APIs were never renamed. Rename
them now so that they match expectations.

https://bugzilla.gnome.org/show_bug.cgi?id=707644

12 years agorepo: Move commit code to another file
Jasper St. Pierre [Thu, 5 Sep 2013 19:43:07 +0000 (15:43 -0400)]
repo: Move commit code to another file

ostree-repo.c is a bit too big, and most of the commit code is
fairly standalone.

https://bugzilla.gnome.org/show_bug.cgi?id=707644

12 years agorepo: Make prepare_transaction introspectable
Jasper St. Pierre [Thu, 5 Sep 2013 19:30:25 +0000 (15:30 -0400)]
repo: Make prepare_transaction introspectable

We need to document the out pointer as an out pointer.

https://bugzilla.gnome.org/show_bug.cgi?id=707644

12 years agorepo: Make OSTreeCommitModifier introspectable
Jasper St. Pierre [Thu, 5 Sep 2013 19:10:54 +0000 (15:10 -0400)]
repo: Make OSTreeCommitModifier introspectable

Callbacks need GDestroyNotifies to be usable from bindings.

https://bugzilla.gnome.org/show_bug.cgi?id=707644

12 years agorepo: Make the ordering consistent between abort/complete_transaction
Jasper St. Pierre [Thu, 5 Sep 2013 19:30:15 +0000 (15:30 -0400)]
repo: Make the ordering consistent between abort/complete_transaction

This just makes the functions nicer to stare at.

https://bugzilla.gnome.org/show_bug.cgi?id=707644

12 years agocore: When using hardlinks, always use linkat() for destination
Colin Walters [Fri, 6 Sep 2013 22:28:20 +0000 (18:28 -0400)]
core: When using hardlinks, always use linkat() for destination

This avoids repeatedly traversing the target pathname, and is just
more efficient.

Part of a prelude to using fd-relative API for the source object path
too.

12 years agocore: Use fd-relative creation for tmp/
Colin Walters [Fri, 6 Sep 2013 22:19:54 +0000 (18:19 -0400)]
core: Use fd-relative creation for tmp/

Update libgsystem submodule for a bugfix.

This is both more efficient from a kernel perspective, and avoids us
calling gs_file_get_path_cached() on tmp_dir constantly, which
triggered another bug due to lack of locking.

12 years agoUpdate .gitignore
Jasper St. Pierre [Thu, 5 Sep 2013 22:18:51 +0000 (18:18 -0400)]
Update .gitignore

12 years agoUpdate docs
Jasper St. Pierre [Thu, 5 Sep 2013 20:38:06 +0000 (16:38 -0400)]
Update docs

12 years agorepo: Rename ostree_repo_check to ostree_repo_open
Jasper St. Pierre [Thu, 5 Sep 2013 17:41:46 +0000 (13:41 -0400)]
repo: Rename ostree_repo_check to ostree_repo_open

As it more clearly describes what the function does: load the
repo from disk and initialize it.

At the same time, add a cancellable parameter.

https://bugzilla.gnome.org/show_bug.cgi?id=707582

12 years agorepo: Move the 'init' builtin command to a public API, ostree_repo_create
Jasper St. Pierre [Thu, 5 Sep 2013 04:14:30 +0000 (00:14 -0400)]
repo: Move the 'init' builtin command to a public API, ostree_repo_create

This continues the goal of making more of ostree accessible by API,
rather than forking out to subprocesses.

https://bugzilla.gnome.org/show_bug.cgi?id=707582

12 years agorepo: Use constructed, not constructor
Jasper St. Pierre [Thu, 5 Sep 2013 04:05:04 +0000 (00:05 -0400)]
repo: Use constructed, not constructor

It's simpler to do this after the object is constructed, rather
than in the middle of construction.

https://bugzilla.gnome.org/show_bug.cgi?id=707582

12 years agoUpdate .gitignore
Jasper St. Pierre [Thu, 5 Sep 2013 04:21:01 +0000 (00:21 -0400)]
Update .gitignore

12 years agomain: Call setlocale()
Colin Walters [Wed, 4 Sep 2013 20:44:54 +0000 (16:44 -0400)]
main: Call setlocale()

While we're not translating anything right now, we should still
setlocale() so that our output is formatted as command line users will
expect.

12 years agocore: Delete unused prototype
Colin Walters [Wed, 4 Sep 2013 12:22:13 +0000 (08:22 -0400)]
core: Delete unused prototype

12 years agocore: Delete unused ostree_create_temp_dir() API
Colin Walters [Wed, 4 Sep 2013 12:18:45 +0000 (08:18 -0400)]
core: Delete unused ostree_create_temp_dir() API

Nothing was using it.  Poof.  Gone!

12 years agolibostree: Move file creation APIs out of core, into checkout.c
Colin Walters [Wed, 4 Sep 2013 12:17:42 +0000 (08:17 -0400)]
libostree: Move file creation APIs out of core, into checkout.c

Since this was the only user, let's not have generic code to go from
OSTree representation -> filesystem here.  It should live in checkout.

12 years agocore: Remove unused prototypes
Colin Walters [Wed, 4 Sep 2013 11:54:32 +0000 (07:54 -0400)]
core: Remove unused prototypes

12 years agocore: Make a helper function private
Colin Walters [Wed, 4 Sep 2013 11:53:02 +0000 (07:53 -0400)]
core: Make a helper function private

Nothing was using this, so make it private.

12 years agocore: Make ostree_write_variant_with_size() private
Colin Walters [Wed, 4 Sep 2013 11:49:41 +0000 (07:49 -0400)]
core: Make ostree_write_variant_with_size() private

More work making the file formats and utilities private.

12 years agolibostree: Make the format of file objects private
Colin Walters [Tue, 3 Sep 2013 22:42:02 +0000 (18:42 -0400)]
libostree: Make the format of file objects private

It's now isolated almost entirely to ostree-core.c, except
ostree-repo.c needs to know how to create archive-z2 file headers.  So
give it a private API for that.

12 years agorepo: Drop ostree_repo_load_variant_c API
Colin Walters [Tue, 3 Sep 2013 22:23:11 +0000 (18:23 -0400)]
repo: Drop ostree_repo_load_variant_c API

Originally we had this to avoid forcing callers to malloc() if they
had a csum, but nowadays we have in-place conversion APIs that are
fast enough.

12 years agorepo: Only apply setuid/xattrs after checksum validation
Colin Walters [Thu, 29 Aug 2013 23:26:00 +0000 (19:26 -0400)]
repo: Only apply setuid/xattrs after checksum validation

See the new comment in the source; basically if we're fetching content
over http, then someone with the capability to MITM the network could
create a transient setuid binary on disk with arbitrary content.  If
they also had a process running on the system (such as an application)
it could be escalated to root.

https://bugzilla.gnome.org/show_bug.cgi?id=707139

12 years agolibostree: Change synchronous fetching API to return a stream
Colin Walters [Sat, 31 Aug 2013 15:22:55 +0000 (11:22 -0400)]
libostree: Change synchronous fetching API to return a stream

There's not a good reason to write small things such as repo/config to
the filesystem, only to read them back in again.  Change the
non-partial API to just return a stream, then read it into a memory
buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=707157

12 years agofetcher: Only open files when we are ready to write to them
Colin Walters [Sat, 31 Aug 2013 14:51:14 +0000 (10:51 -0400)]
fetcher: Only open files when we are ready to write to them

Otherwise we quickly run out of file descriptors when doing large
requests.

https://bugzilla.gnome.org/show_bug.cgi?id=707157

12 years agofetcher: Clean up code to avoid intermediate files
Colin Walters [Fri, 30 Aug 2013 23:29:04 +0000 (19:29 -0400)]
fetcher: Clean up code to avoid intermediate files

I think originally we had the .part/.done separation because we were
trying to support partial downloads of files like repo/config and
repo/refs.

But now that the http server configuration won't give us partial
results, we don't need to support caching those files between runs.

And thus, there's no reason to have the .part/.done and do the dance
with renaming them.

When fetching objects/ and other things that use _with_async, we
continue to use _append_to(), and if the returned range tells us we
have all the bytes, then we hand the full file over to the caller.

Don't attempt to shortcut in the case where the last run told us we
already have the object; the object fetcher code will not make a
request.

While we're here, also clean up use of GError and consistently use the
cancellable from the pending.

https://bugzilla.gnome.org/show_bug.cgi?id=707157

12 years agoprepare-root: Fix ostree= kernel argument at end
Colin Walters [Sun, 1 Sep 2013 08:16:52 +0000 (04:16 -0400)]
prepare-root: Fix ostree= kernel argument at end

Extracting the code for parse_ostree_cmdline() and running it on some
test input (on RHEL6.4 glibc), I can reproduce the odd behavior from
getline() where it apparently returns the size of the default malloc
buffer in the size output, and some non-zero value.

This behavior would be OK except that it breaks the logic for
stripping off the trailing newline, which in turn breaks booting
because we return "ostree=foo\n".

This has worked so far in gnome-ostree because syslinux apparently
injects initrd=/path/to/initrd as a final kernel argment.

Anyways, we don't handle NUL characters here in /proc/cmdline, so
let's just call strlen () to be safe.

https://bugzilla.gnome.org/show_bug.cgi?id=707192

12 years agolibostree: Make introspectable again
Jasper St. Pierre [Sun, 1 Sep 2013 15:17:38 +0000 (11:17 -0400)]
libostree: Make introspectable again

At some point, the variable name for the headers changed and the
introspection build line forgot to be updated.

https://bugzilla.gnome.org/show_bug.cgi?id=707228

12 years agotests: Drop kernel modules from checksums
Colin Walters [Fri, 30 Aug 2013 22:12:31 +0000 (18:12 -0400)]
tests: Drop kernel modules from checksums

We can actually share these across different kernels.  Thanks to
Tobias Hunger <tobias.hunger@gmail.com> for pointing this out.

12 years agoadmin: Error out if we see malformed or mismatched checksums for /boot
Colin Walters [Fri, 30 Aug 2013 22:10:35 +0000 (18:10 -0400)]
admin: Error out if we see malformed or mismatched checksums for /boot

The kernel/initramfs both need to end in -SHA256 and match.

12 years agorepo: Use non-deprecated API with sufficiently new libarchive
Colin Walters [Fri, 30 Aug 2013 08:50:29 +0000 (10:50 +0200)]
repo: Use non-deprecated API with sufficiently new libarchive

Based on a patch Tobias Hunger <tobias.hunger@gmail.com>

12 years agoFix warning about format string not being a string literal
Tobias Hunger [Fri, 30 Aug 2013 08:34:55 +0000 (10:34 +0200)]
Fix warning about format string not being a string literal

12 years agoFix warnings about unused variables
Tobias Hunger [Fri, 30 Aug 2013 08:32:37 +0000 (10:32 +0200)]
Fix warnings about unused variables

12 years agogitignore: Add ostree-prepare-root and ostree-remount binaries
Tobias Hunger [Thu, 29 Aug 2013 22:56:09 +0000 (00:56 +0200)]
gitignore: Add ostree-prepare-root and ostree-remount binaries

12 years agoostree: Support for using EDITOR to fill commit subject/body
Stef Walter [Thu, 29 Aug 2013 15:23:20 +0000 (17:23 +0200)]
ostree: Support for using EDITOR to fill commit subject/body

Behave similar to git when 'ostree commit' is run without
a --subject or --body. Bring up an editor. The first line becomes
the subject and following lines become the --body after an optional
blank line.

Use similar logic to git in determining EDITOR

https://bugzilla.gnome.org/show_bug.cgi?id=707063

12 years agoostree: Fix bug printing out commit body
Stef Walter [Thu, 29 Aug 2013 16:14:28 +0000 (18:14 +0200)]
ostree: Fix bug printing out commit body

Body was printed out repeated and mangled due to bad printf format string.

https://bugzilla.gnome.org/show_bug.cgi?id=707067

12 years agopull: Clean up synchronous fetching code
Colin Walters [Wed, 28 Aug 2013 19:29:50 +0000 (15:29 -0400)]
pull: Clean up synchronous fetching code

Fold in fetch_uri to fetch_uri_utf8(), and rename the latter to
include _sync as a suffix, since it's synchronous.

Improve the status line to show when we're fetching a synchronous URI;
previously we just showed "Scanning metadata".

https://bugzilla.gnome.org/show_bug.cgi?id=707023

12 years agomain: Support passing bare directory names to commit
Colin Walters [Wed, 28 Aug 2013 21:32:21 +0000 (17:32 -0400)]
main: Support passing bare directory names to commit

It segfaulted before if you passed non-options, and a single directory
name is probably what people want.

12 years agopull: Add support for resuming downloads via range requests
Jeremy Whiting [Mon, 26 Aug 2013 20:59:55 +0000 (14:59 -0600)]
pull: Add support for resuming downloads via range requests

Use a consistent temporary filename to download uri's.
Check for downloaded files before fetching from uri.
Download to hash.part file, then copy/move to hash.done when complete.
Add argument support to setup_fake_remote_repo1 function.
Add test for pull resume.
To implement this, pass --force-range-requests into the trivial-httpd,
which will only serve half of the objects to clients at a time.

https://bugzilla.gnome.org/show_bug.cgi?id=706344

12 years agotest: Improve pull corruption test
Jeremy Whiting [Tue, 27 Aug 2013 22:01:43 +0000 (16:01 -0600)]
test: Improve pull corruption test

To verify pull with a second repo works.

12 years agobuild: Add a note that ostree only supports InstalledTests
Colin Walters [Tue, 27 Aug 2013 23:34:58 +0000 (19:34 -0400)]
build: Add a note that ostree only supports InstalledTests

12 years agorepo: Clean up tmpdir also on transaction abort
Colin Walters [Tue, 27 Aug 2013 15:32:26 +0000 (11:32 -0400)]
repo: Clean up tmpdir also on transaction abort

Pull the cleanup code to a helper function, and ensure we delete
leftover temporary files also when aborting a transaction.  Mainly
this will happen if a local 'ostree commit' fails.

While we're here, also change it to use gs_shutil_rm_rf() which also
handles directories, should we start using those.

Reviewed-by: Jeremy Whiting <jpwhiting@kde.org>
12 years agorepo: Clean up temporaries after a transaction completes
Jeremy Whiting [Mon, 26 Aug 2013 21:44:06 +0000 (15:44 -0600)]
repo: Clean up temporaries after a transaction completes

Prevously, we were just leaving temporary files there forever if
a transaction was interrupted.

https://bugzilla.gnome.org/show_bug.cgi?id=706344

12 years agotrivial-httpd: Add missing include for shutdown() on eglibc
Colin Walters [Mon, 26 Aug 2013 21:57:43 +0000 (17:57 -0400)]
trivial-httpd: Add missing include for shutdown() on eglibc

12 years agotrivial-httpd: Close the socket when sending partial files
Jeremy Whiting [Mon, 26 Aug 2013 20:52:43 +0000 (14:52 -0600)]
trivial-httpd: Close the socket when sending partial files

This will force the client to re-request them, which will be used to
test interrupted "ostree pull" requests.

https://bugzilla.gnome.org/show_bug.cgi?id=706344

12 years agoRelease 2013.6
Colin Walters [Mon, 26 Aug 2013 03:34:51 +0000 (23:34 -0400)]
Release 2013.6

12 years agodoc/adapting-existing: Describe /lib/passwd
Colin Walters [Sun, 25 Aug 2013 20:12:14 +0000 (16:12 -0400)]
doc/adapting-existing: Describe /lib/passwd

12 years agomain: Code cleanup by passing OstreeRepo * directly to builtins
Colin Walters [Sun, 25 Aug 2013 19:11:05 +0000 (15:11 -0400)]
main: Code cleanup by passing OstreeRepo * directly to builtins

It turns out every builtin (with one special exception) that takes a
repo argument did the same thing; let's just centralize it.  The
special exception was "ostree init --repo=foo" where foo is expected
to *not* actually be a repo.  In that case, simply skip the
ostree_repo_check() invocation.

https://bugzilla.gnome.org/show_bug.cgi?id=706762

12 years agolibostree: Improve commit filter API
Colin Walters [Sat, 17 Aug 2013 18:19:37 +0000 (14:19 -0400)]
libostree: Improve commit filter API

Make the structure private, and document the flags.

https://bugzilla.gnome.org/show_bug.cgi?id=706214

12 years agopull: Drop obsoleted "related objects" API
Colin Walters [Mon, 19 Aug 2013 23:13:53 +0000 (19:13 -0400)]
pull: Drop obsoleted "related objects" API

We removed support for writing "related objects" from ostree commits
in ostree git c9b61cbfee5d3cd0433ef14eac9ba9d1b24a0e38 because it just
didn't work out as an idea.  This also removes the API and code from
"ostree pull".

Note there was no test suite coverage.

https://bugzilla.gnome.org/show_bug.cgi?id=706342

12 years agorepo: Fix object storage size API to be 64 bit
Colin Walters [Sun, 18 Aug 2013 11:56:20 +0000 (07:56 -0400)]
repo: Fix object storage size API to be 64 bit

This fixes a pointer size warning on 32-bit builds.

https://bugzilla.gnome.org/show_bug.cgi?id=706235

12 years agodoc: Minor tweaks
Colin Walters [Sun, 25 Aug 2013 14:32:40 +0000 (10:32 -0400)]
doc: Minor tweaks

12 years agodoc/adapting-existing: Elaborate a bit more on FS layout and links
Colin Walters [Sun, 25 Aug 2013 14:23:19 +0000 (10:23 -0400)]
doc/adapting-existing: Elaborate a bit more on FS layout and links

12 years agodoc/adapting-existing: A bit more elaboration and a typo fix
Colin Walters [Sat, 24 Aug 2013 23:18:57 +0000 (19:18 -0400)]
doc/adapting-existing: A bit more elaboration and a typo fix

12 years agodoc: Add some docs about adapting existing package managers
Colin Walters [Sat, 24 Aug 2013 15:35:42 +0000 (11:35 -0400)]
doc: Add some docs about adapting existing package managers

12 years agopull: Update comment to better reflect current reality
Colin Walters [Fri, 23 Aug 2013 21:31:24 +0000 (17:31 -0400)]
pull: Update comment to better reflect current reality

12 years agodoc/repo: Describe object types
Colin Walters [Fri, 23 Aug 2013 21:21:31 +0000 (17:21 -0400)]
doc/repo: Describe object types

12 years agodoc/overview: Add a note about the GPL
Colin Walters [Fri, 23 Aug 2013 21:21:19 +0000 (17:21 -0400)]
doc/overview: Add a note about the GPL

12 years agodoc: Add a section about how atomic upgrades work
Colin Walters [Thu, 22 Aug 2013 23:14:23 +0000 (19:14 -0400)]
doc: Add a section about how atomic upgrades work

Migrating some content from
https://live.gnome.org/OSTree/DeploymentModel2

12 years agotrivial-httpd: Handle the autoexit case when the docroot is a symlink
Vivek Dasmohapatra [Thu, 22 Aug 2013 18:44:29 +0000 (19:44 +0100)]
trivial-httpd: Handle the autoexit case when the docroot is a symlink

12 years agotrivial-httpd: Close stdout & stdin so $() can capture output when daemonized
Vivek Dasmohapatra [Thu, 22 Aug 2013 18:43:44 +0000 (19:43 +0100)]
trivial-httpd: Close stdout & stdin so $() can capture output when daemonized

Will be used by tests.

12 years agotrivial-httpd: Handle -p - as meaning write-port-to-stdout
Vivek Dasmohapatra [Thu, 22 Aug 2013 17:28:14 +0000 (18:28 +0100)]
trivial-httpd: Handle -p - as meaning write-port-to-stdout

This is convenient to use from tests.

12 years agofetcher: Return NOT_FOUND when the HTTP code is 410 or 404
Vivek Dasmohapatra [Mon, 19 Aug 2013 17:13:44 +0000 (18:13 +0100)]
fetcher: Return NOT_FOUND when the HTTP code is 410 or 404

This will be used by the pull code to download optional data.

12 years agomain: Drop --archive option from init, now that the code is removed
Colin Walters [Mon, 19 Aug 2013 16:43:05 +0000 (12:43 -0400)]
main: Drop --archive option from init, now that the code is removed

Commit 1ec7c304086c14fe0540d9c371b66f64a7a81b2e removed archive mode,
so this bit needs to be removed too.

https://bugzilla.gnome.org/show_bug.cgi?id=706327

12 years agodoc: Split overview into chapters, expand a bit
Colin Walters [Thu, 22 Aug 2013 13:17:08 +0000 (09:17 -0400)]
doc: Split overview into chapters, expand a bit

12 years agodoc: Add a section on deployments
Colin Walters [Thu, 22 Aug 2013 12:47:50 +0000 (08:47 -0400)]
doc: Add a section on deployments

12 years agoadmin: notify detected bootloader configuration
Javier Martinez Canillas [Thu, 22 Aug 2013 02:00:45 +0000 (04:00 +0200)]
admin: notify detected bootloader configuration

OSTree now supports multiple bootloader backends so
notify which bootloader configuration was detected.

https://bugzilla.gnome.org/show_bug.cgi?id=706548

Signed-off-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
12 years agoadmin: Add API to OtBootloader to get name
Colin Walters [Thu, 22 Aug 2013 10:33:04 +0000 (06:33 -0400)]
admin: Add API to OtBootloader to get name

https://bugzilla.gnome.org/show_bug.cgi?id=706548

12 years agoadmin: Don't fail to deploy if there isn't a bootloader config
Javier Martinez Canillas [Tue, 20 Aug 2013 14:28:34 +0000 (14:28 +0000)]
admin: Don't fail to deploy if there isn't a bootloader config

Currently, when deploying an OSTree that does not contain a
bootloader configuration it fails with the following message:

"No known bootloader configuration detected"

A bootloader configuration is not strictly necessary if the
bootloader used is able to parse /boot/loader/entries on boot.

So, failing to deploy seems to be a little harsh. It is better
to just not write the bootloader configuration if a previous
one was not found but still swap the bootversion.

https://bugzilla.gnome.org/show_bug.cgi?id=706477

Signed-off-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
12 years agoadmin: Write out correct version fields in boot/loader/entries files
Colin Walters [Wed, 21 Aug 2013 22:48:00 +0000 (18:48 -0400)]
admin: Write out correct version fields in boot/loader/entries files

Before, we were writing the "bootversion", which is either 0 or 1, for
all entries.  This is completely wrong; the idea of the "version"
field is to compare between entries.

Fix this by writing out the inverted index - internally, index 0 is
the *first* boot entry, so we give it the highest version number, and
index N is the last, so give it version 0.

Then fix the deployment sorting code to correctly reverse the version
number comparison, so we read back the right order.

In practice before this bug didn't matter because "normally" you only
have at most two deployments.

https://bugzilla.gnome.org/show_bug.cgi?id=706546

12 years agodoc: Add repo docs
Colin Walters [Wed, 21 Aug 2013 12:26:24 +0000 (08:26 -0400)]
doc: Add repo docs

12 years agolibostree: Check out directories depth-first in serial, switch to sync API
Colin Walters [Tue, 20 Aug 2013 23:10:09 +0000 (19:10 -0400)]
libostree: Check out directories depth-first in serial, switch to sync API

The way we recurse into subdirectories in parallel makes it far too
easy to hit up against the arbitrary Linux fd limit of 1024.

Since the fix here is about dropping parallelism, let's just go all
the way for now and make a plain old synchronous API =(

This does simplify both internal callers which wanted a sync API
anyways.

https://bugzilla.gnome.org/show_bug.cgi?id=706380

12 years agomain: Add U-Boot bootlader backend support
Javier Martinez Canillas [Thu, 15 Aug 2013 10:33:25 +0000 (12:33 +0200)]
main: Add U-Boot bootlader backend support

This patch adds support to generate files that
can be used by Universal Bootloader (U-Boot).

U-Boot allows to modify boards default boot commands by
reading and executing a bootscript file or importing a
plain text file that contains environment variables that
could parameterize the boot command or a bootscript.

OSTree generates a uEnv.txt file that contains booting
information that is taken from Boot Loader Specification
snippets files as defined in the new OSTree deployment model:

https://wiki.gnome.org/OSTree/DeploymentModel2

On deploy or upgrade an uEnv.txt env var file is created
in the path /boot/loader.${bootversion}/uEnv.txt. Also, a
/boot/uEnv.txt symbolic link to loader/uEnv.txt is created
so U-Boot can always import the file from a fixed path.

Since U-Boot does not support a menu to list a set of
Operative Systems, the most recent bootloader configuration
from the list is used.

To boot an OSTree using the generated uEnv.txt file, a
board has to parameterize its default boot command using the
following variables defined by OSTree:

${kernel_image}:  path to the Linux kernel image
${ramdisk_image}: path to the initial ramdisk image
${bootargs}:      parameters passed to the kernel command line

Alternatively, for boards that don't support this scheme,
a bootscript that overrides the default boot command can be used.

An example of such a bootscript could be:

setenv scriptaddr 40008000
setenv kernel_addr 0x40007000
setenv ramdisk_addr 0x42000000
ext2load mmc 0:1 ${scriptaddr} uEnv.txt
env import -t ${scriptaddr} ${filesize}
ext2load mmc 0:1 ${kernel_addr} ${kernel_image}
ext2load mmc 0:1 ${ramdisk_addr} ${ramdisk_image}
bootm ${kernel_addr} ${ramdisk_addr}

Signed-off-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
https://bugzilla.gnome.org/show_bug.cgi?id=706370

12 years agoadmin: Extract ot_admin_join_config_lines() helper function
Javier Martinez Canillas [Tue, 20 Aug 2013 15:54:59 +0000 (17:54 +0200)]
admin: Extract ot_admin_join_config_lines() helper function

ot-bootloader-syslinux.c has a join_lines() function that is rather
generic and can be used in other places. Let's add it as a helper
function.

Signed-off-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
https://bugzilla.gnome.org/show_bug.cgi?id=706370

12 years agotest: fix a trivial typo in libtests.sh
Javier Martinez Canillas [Thu, 15 Aug 2013 22:59:01 +0000 (00:59 +0200)]
test: fix a trivial typo in libtests.sh

When running the test-admin-deploy-1.sh unit test,
cat shows the following error:

cat: boot/vmlinuz-3-6.0: No such file or directory

due a trivial typo in the kernel image file name.

Signed-off-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
https://bugzilla.gnome.org/show_bug.cgi?id=706371

12 years agolibostree: Extend gtk-doc coverage for refs and prune APIs
Colin Walters [Mon, 19 Aug 2013 14:16:05 +0000 (10:16 -0400)]
libostree: Extend gtk-doc coverage for refs and prune APIs

12 years agoostree.doap: Update description based on docs.
Colin Walters [Mon, 19 Aug 2013 13:01:20 +0000 (09:01 -0400)]
ostree.doap: Update description based on docs.

12 years agomain: Use macro to reduce duplication among builtin prototypes
Colin Walters [Mon, 19 Aug 2013 13:00:02 +0000 (09:00 -0400)]
main: Use macro to reduce duplication among builtin prototypes

Just less code.

12 years agoRevert "libotutil: Make use of GBytes in ot_variant_read()"
Colin Walters [Sun, 18 Aug 2013 11:51:25 +0000 (07:51 -0400)]
Revert "libotutil: Make use of GBytes in ot_variant_read()"

This reverts commit c77908bf514d61e75798932f61b5b414d9e36a3c; we can't
do this since g_variant_get_data_as_bytes() is a GLib 2.36 API.

12 years agolibotutil: Drop accidental use of GLib 2.36 API
Colin Walters [Sun, 18 Aug 2013 11:50:50 +0000 (07:50 -0400)]
libotutil: Drop accidental use of GLib 2.36 API

Sticking with 2.34 for a while longer.

12 years agoUse { 0, } for structure initialization rather than memset()
Colin Walters [Sat, 17 Aug 2013 11:59:23 +0000 (07:59 -0400)]
Use { 0, } for structure initialization rather than memset()

It's cleaner, safer, and I had a totally wrong idea stuck in my head
about why memset() should be used.

https://bugzilla.gnome.org/show_bug.cgi?id=705968

12 years agoRelease 2013.5
Colin Walters [Sat, 17 Aug 2013 21:05:17 +0000 (17:05 -0400)]
Release 2013.5

12 years agobuild: Fix and prettify build option output
Colin Walters [Sat, 17 Aug 2013 19:21:31 +0000 (15:21 -0400)]
build: Fix and prettify build option output

The documentation one was broken by the gtk-doc changes, and let's
align things.

12 years agoostree init: Fix mode list help string
Sjoerd Simons [Mon, 12 Aug 2013 08:53:03 +0000 (10:53 +0200)]
ostree init: Fix mode list help string

It's archive-z2, not archive-z.

https://bugzilla.gnome.org/show_bug.cgi?id=705849